﻿using System;

namespace zy
{
    // (1) 矩形类 Rect
    internal class Rect
    {
        public double Width { get; set; }
        public double Height { get; set; }

        // 带参数的构造方法
        public Rect(double width, double height)
        {
            Width = width;
            Height = height;
        }

        // 无参构造方法（默认宽高为10）
        public Rect() : this(10, 10) { }

        // 计算面积
        public double Area()
        {
            return Width * Height;
        }

        // 计算周长
        public double Perimeter()
        {
            return 2 * (Width + Height);
        }
    }

    // (2) 具有位置的矩形类 PlainRect（继承自Rect）
    internal class PlainRect : Rect
    {
        public double StartX { get; set; }
        public double StartY { get; set; }

        // 带4个参数的构造方法
        public PlainRect(double startX, double startY, double width, double height)
            : base(width, height)
        {
            StartX = startX;
            StartY = startY;
        }

        // 无参构造方法（全部初始化为0）
        public PlainRect() : this(0, 0, 0, 0) { }

        // 判断点是否在矩形内
        public bool IsInside(double x, double y)
        {
            return x >= StartX &&
                   x <= StartX + Width &&
                   y <= StartY &&
                   y >= StartY - Height; // 注意Y轴方向（计算机坐标系Y轴向下）
        }
    }

    internal class Class5
    {
        static void Main(string[] args)
        {
            // (3) 测试程序
            PlainRect rect = new PlainRect(10, 10, 20, 10);

            // 计算并输出面积和周长
            Console.WriteLine($"矩形面积: {rect.Area()}");
            Console.WriteLine($"矩形周长: {rect.Perimeter()}");

            // 判断点(25.5, 13)是否在矩形内
            double testX = 25.5;
            double testY = 13;
            bool isInside = rect.IsInside(testX, testY);
            Console.WriteLine($"点({testX}, {testY}) {(isInside ? "在" : "不在")}矩形内");
        }
    }
}